// #include<iostream>
//
// #include <string>
//
// using namespace std;
// //c++模版 把类型当做未知量  在传参或者实例化的过程中决定类型
// //template <class T> 或者 template <typename T>
// //template <class T1,class T2,class T3...>
// //函数模版
// //类模版
//
// #if 0
// int Max(int a,int b)
// {
//     return a > b?a:b;
// }
//
// string Max(string a,string b)
// {
//     return a > b?a:b;
// }
//
// double Max(double a,double b)
// {
//     return a > b?a:b;
// }
// # endif
//
// template <typename T>T Max(T a,T b)
// {
//     return a > b?a:b;
// }
//
// template <class T>
// T sum(T a,T b)
// {
//     return a+b;
// }
//
// template <typename T1,typename T2>
// void print(T1 t1,T2 t2)
// {
//     cout << t1 << t2<< endl;
// }
//
//
//
// int main()
// {
//
//     //隐式调用
//     int a = sum(1,2);
//     cout << a << endl;
//
//     string b = sum(string("abc"),string("ced"));
//     cout << b << endl;
//
//     //显示调用
//     //<>传参
//     cout << sum<int>(1,2) << endl;
//     cout << sum<double>(1.1,2.3) << endl;
//
//     print(1,2);
//     print<int,double>(1,2.3);
//
//     return 0;
// }